n = int(input())
G = []
root = sum(range(n))
# 找根有两种方案：1.无父即根 2.从根出发能遍历全图
# 复杂度分别是 O(n) 和 O(n**2)


def toInt(x):
    if x == '-':
        return -1
    else:
        x = int(x)
        global root
        root -= x
        return x


for _ in range(n):
    l, r = input().split()
    G.append([toInt(l), toInt(r)])

mx, ans = -1, -1


def dfs(rt, cnt):
    global mx, ans
    if cnt > mx:
        mx = cnt
        ans = rt
    if G[rt][0] != -1:
        dfs(G[rt][0], cnt*2)
    if G[rt][1] != -1:
        dfs(G[rt][1], cnt*2+1)
# 找所有节点中，对应完全二叉树的，最大编号
# 如果不是完全二叉树 mx必定大于n

dfs(root, 1)

if mx == n:
    print('YES', ans)
else:
    print('NO', root)
